home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / RND.ASM < prev    next >
Assembly Source File  |  1991-10-26  |  931b  |  68 lines

  1.  
  2. ; A pseudo random numbers generator
  3. ;  for use with the MuTation Engine <tm>
  4.  
  5. ; Version 1.01 (26-10-91)
  6. ; (C) 1991 CrazySoft, Inc.
  7.  
  8.     .model    tiny
  9.     .code
  10.  
  11.     public    rnd_init, rnd_get, rnd_buf, data_top
  12.  
  13. rnd_init:
  14.     push    ds si dx cx bx
  15.     xor    ah,ah
  16.     int    1ah
  17.     in    al,[40h]
  18.     mov    ah,al
  19.     in    al,[40h]
  20.     xor    ax,cx
  21.     xor    dx,ax
  22.     push    cs
  23.     pop    ds
  24.     mov    si,offset rnd_buf
  25.     xor    bh,bh
  26.     jmp    short rnd_put
  27. rnd_get:
  28.     push    ds si dx cx bx
  29.     push    cs
  30.     pop    ds
  31.     mov    si,offset rnd_buf
  32.     mov    bl,[si]
  33.     xor    bh,bh
  34.     mov    ax,[bx+si+2]
  35.     mov    dx,[bx+si+4]
  36.     add    byte ptr [si],4
  37.     mov    cx,7
  38. rnd_lup:
  39.     shl    ax,1
  40.     rcl    dx,1
  41.     mov    bl,al
  42.     xor    bl,dh
  43.     jns    nxt_bit
  44.     inc    al
  45. nxt_bit:
  46.     loop    rnd_lup
  47. rnd_put:
  48.     mov    bl,[si+1]
  49.     mov    [bx+si+2],ax
  50.     mov    [bx+si+4],dx
  51.     add    bl,4
  52.     mov    [si+1],bl
  53.     mov    al,dl
  54.     cmp    bl,[si]
  55.     jnz    rnd_done
  56.     add    byte ptr [si],4
  57. rnd_done:
  58.     pop    bx cx dx si ds
  59.     ret
  60.  
  61.     .data
  62.  
  63. rnd_buf dw    129 dup(?)
  64.  
  65. data_top:
  66.  
  67.     end
  68.